package com.ppc.service;

import com.ppc.dto.AdminLoginDTO;
import com.ppc.dto.ClaimSolveDTO;
import com.ppc.dto.ComplaintSolveDTO;
import com.ppc.entity.AdminPPC;
import com.ppc.result.PageResult;
import com.ppc.vo.AdminClaimDetailVO;
import com.ppc.vo.AdminComplaintDetailVO;
import com.ppc.vo.AdminLoginVO;
import com.ppc.vo.ClaimDetailVO;
import com.ppc.vo.ComplaintDetailVO;

/**
 * @author dy
 * @date 2023/12/20
 * @description 服务层
 */
public interface AdminService {

  /**
   * @param adminLoginDTO
   * @return {@link AdminLoginVO }
   * @description
   */
  AdminLoginVO login(AdminLoginDTO adminLoginDTO);

  /**
   * @param adminPPC
   * @description
   */
  void register(AdminPPC adminPPC);

  /**
   * @param claimSolveDTO
   * @description
   */
  void solveWorkerClaim(ClaimSolveDTO claimSolveDTO);

  /**
   * @param claimSolveDTO
   * @description
   */
  void solveEmployerClaim(ClaimSolveDTO claimSolveDTO);

  /**
   * @param page
   * @param pageSize
   * @param claimStatus
   * @return {@link PageResult }
   * @description
   */
  PageResult queryWorkerClaimWithStatus(Integer page, Integer pageSize, Integer claimStatus);

  /**
   * @param page
   * @param pageSize
   * @param claimStatus
   * @return {@link PageResult }
   * @description
   */
  PageResult queryEmployerClaimWithStatus(Integer page, Integer pageSize, Integer claimStatus);

  /**
   * @param employerId
   * @param status
   * @description
   */
  void setEmployerStatus(long employerId, int status);

  /**
   * @param workerId
   * @param status
   * @description
   */
  void setWorkerStatus(long workerId, int status);

  /**
   * @param page
   * @param pageSize
   * @param userName
   * @return {@link PageResult }
   * @description
   */
  PageResult queryEmployerWithName(Integer page, Integer pageSize, String userName);

  /**
   * @param page
   * @param pageSize
   * @param userName
   * @return {@link PageResult }
   * @description
   */
  PageResult queryWorkerWithName(Integer page, Integer pageSize, String userName);

  /**
   * @param complaintSolveDTO
   * @description
   */
  void solveComplaint(ComplaintSolveDTO complaintSolveDTO);

  /**
   * @param page
   * @param pageSize
   * @param complaintStatus
   * @return {@link PageResult }
   * @description
   */
  PageResult queryComplaintWithStatus(Integer page, Integer pageSize, Integer complaintStatus);

  /**
   * @param complaintId
   * @return {@link ComplaintDetailVO }
   * @description
   */
  AdminComplaintDetailVO getComplaintDetail(String complaintId);

  /**
   * @param claimId
   * @return {@link ClaimDetailVO }
   * @description
   */
  AdminClaimDetailVO getClaimDetail(String claimId);
}
